package com.parking.user.service;

import com.parking.dto.UserInfoDto;
import com.parking.dto.UserPhoneForm;
import com.parking.form.AddUserForm;
import com.parking.form.UserLoginForm;
import com.parking.user.entity.UserAccount;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletResponse;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 香菜狗带
 * @since 2023年11月28日
 */
public interface UserAccountService extends IService<UserAccount> {
    /***
     * 登录方法
     * 参数：
     ("用户账号")：userAccount;
     ("用户密码")：userPass;
     ("请求头"):response
     */
    UserInfoDto userLogin(UserLoginForm form, HttpServletResponse response);
    /***
     * 退出登录方法
     * 参数：
     ("用户Id")：userId;
     */
    void LogOff(String userAccount);
    /***
     * 用户注册
     * 参数：
     ("用户账号")：userAccount;
     ("用户密码")：userPass;
     ("用户名称")：userInfoName;
     ("用户电话")：userInfoTel;
     ("用户身份证号")：userInfoCard;
     */
    void addUserAccount(AddUserForm form);
    /***
     * 用户注册验证码
     * 参数：
     * ("用户电话")：userInfoTel;
     */
    void sendRegisterCode(String phone) throws Exception;
    /***
     * 用户验证码登录
     * 参数：
     ("用户电话")：userInfoTel;
     ("验证码")：code;
     */
    UserInfoDto codeLogin(UserPhoneForm form);
    /**
     * 启用用户状态
     * 参数
     * 令牌：authorization
     * 账号状态：state
     * */
    void enableStateById(Integer userId, Integer platformId);
    /**
     * 禁用用户状态
     * 参数
     * 令牌：authorization
     * 账号状态：state
     * */
    void downStateById( Integer userId, Integer platformId);
    /**
     * 删除用户
     * 参数
     * 令牌：authorization
     * 账号状态：state
     * */
    void deleteStateById(Integer userId, Integer platformId);
    /***
     * 用户登录验证码
     * 参数：
     * ("用户电话")：userInfoTel;
     */
    void sendLoginCode(String phone);
}
